package com.lizonghui.googleplay.utils;

import android.content.Context;
import android.content.res.Resources;
import android.os.Handler;

import com.lizonghui.googleplay.base.MyApplication;

/**
 * Created by Administrator on 2016/6/16.
 * 和UI相关的工具类
 */
public class UIUtils {
    /**
     * 得到上下文
     */
    public static Context getContext() {
        return MyApplication.getContext();
    }

    /**
     * 得到Resource对象
     */
    public static Resources getResources() {
        return getContext().getResources();
    }

    /**
     * 得到String。xml中的字符
     */
    public static String getString(int resId) {
        return getResources().getString(resId);
    }


    /**
     * 得到String。xml中的字符,带占位符
     */
    public static String getString( int resId, Object... formatArgs) {
        return getResources().getString(resId,formatArgs);
    }


    /**
     * 得到String。xml中的字符数组
     */
    public static String[] getStringArr(int resId) {
        return getResources().getStringArray(resId);
    }

    /**
     * 得到color。xml中的颜色值
     */
    public static int getColor(int resId) {
        return getResources().getColor(resId);
    }

    /**
     * 获得应用程序包名
     *
     * @return
     */
    public static String getPackageName() {
        return getContext().getPackageName();
    }

    /**
     * 得到主线程的id
     */
    public static long getMainThreadId() {
        return MyApplication.getMainThreadId();
    }

    /**
     * 得到主线程的handler
     */
    public static Handler getHandler() {
        return MyApplication.getMHandler();
    }

    /**
     * 安全的执行一个task
     *
     * @param task
     */
    public static void postTaskSafely(Runnable task) {
        //得到当前线程ID
        long curThreadId = android.os.Process.myTid();
        long mainThreadId = getMainThreadId();
        if (curThreadId == mainThreadId) {
            //如果调用该方法的线程是主线程-->直接执行task
            task.run();
        } else {
            //如果调用该方法的线程是子线程-->把任务post到主线程handler去执行
            Handler handler = getHandler();
            handler.post(task);
        }

    }

    /**
     * dip-->px
     *
     * @param dip
     * @return
     */
    public static int dip2px(int dip) {
        //px/dp =  density
        //px/(ppi/160) = px
        float density = getResources().getDisplayMetrics().density;//比值关系1.5
        int ppi = getResources().getDisplayMetrics().densityDpi;//屏幕密度（240）
        int px = (int) (density * dip + .5f);//浮点数转int
        return px;
    }

    /**
     * dx-->dip
     *
     * @param px
     * @return
     */
    public static int px2dip(int px) {
        //px/dp =  density
        float density = getResources().getDisplayMetrics().density;
        int dp = (int) (px / density + .5f);
        return dp;
    }


}
